As development teams strive for increased productivity, Model Driven Development (MDD) has been gaining momentum lately with a promise of more clean, consistent and robust system designs, faster development by generating most of the plumbing code from the model(s), and better system portability from one platform to another.
Most notably MDD has been formalized by the Object Management Group with their Model Driven Architecture® (MDA) approach and there are already a number of vendors that implement or support MDA. The MDA is mostly oriented around the Unified Modeling Language (UML) specification.
UML models are typically represented in a graphical format as diagrams, which require vendor-specific editors and may not allow simultaneous editing or they make change control management quite difficult.
While UML can be extensible with a use of such features as stereotypes, it doesn't seem to be flexible enough for defining arbitrary models, and the learning curve for UML seems to be fairly steep. Additionally, each vendor has to provide proprietary engines and custom transformation languages to perform model transformations.
On the other hand, Model Driven Development based on Extensible Markup Language (XML) can leverage a variety of standard XML technologies such as Extensible Stylesheet Language Transformations (XSLT), XML Schema Definitions (XSD), etc. to allow defining any types of models in an XML format. You can view and edit XML models with any text editor and easily compare, merge or version-control them. You can define a grammar (meta-model) for your models with XSD schemas, which can also be used to validate the models and to prompt the allowed tags and attributes in XSD-aware XML editors. You can then use the standard XSLT technology to further validate the XML model beyond the limitations of the XSD validation and to finally transform the model into other system artifacts, such as code, database scripts, documentation etc.
In both cases, to maximize the benefits of the code generation, the generation process needs to be set up in such a way that the developers would never have to manually change the generated code, but rather extend it separately, so that the generated artifacts can be regenerated at any later point if the model has changed. This will ensure that the models are always in synch with the actual code.
Some modeling methods already store their models in XML format and provide some graphical tools for editing them, such as the Entity Data Models (EDM) that consist of conceptual models, storage models and the mappings between the two models. However defining such models directly in XML without using a special graphical tool could be extremely hard for the users as the XML format the models are using tends to be pretty verbose and is not designed to be created or edited manually by the users.